package com.lyl.projectspringboot.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.sql.Timestamp;
import java.time.LocalDate;

/**
 * Class 用户实体类
 * @author LYL
 * @Date: 2025-06-07 01:30:00
 */

@Setter
@Getter
@ToString
@TableName("t_users")
public class User {
    //用户ID
    @TableId(value = "user_uid",  type = IdType.AUTO)
    private Integer userUid;

    //用户UID，用户可修改但不得重复
    @TableField(value = "user_id")
    private String userId;

    //用户名
    @TableField(value = "user_name")
    private String userName;

    //用户密码
    @TableField(value = "user_password")
    private String userPassword;

    //用户手机号
    @TableField(value = "user_phone")
    private Long userPhone;

    //用户性别
    @TableField(value = "user_sex")
    private String UserSex;

    // 用户地址
    @TableField(value = "user_address")
    private String userAddress;

    // 用户邮箱
    @TableField(value = "user_email")
    private String userEmail;

    // 用户生日
    @TableField(value = "user_birthday")
    private LocalDate userBirthday;

    // 用户创建时间
    @TableField(value = "user_creation_time")
    private Timestamp userCreationTime;

    // 用户更新时间
    @TableField(value = "user_update_time")
    private Timestamp userUpdateTime;

    // 用户在线状态
    @TableField(value = "user_online_status")
    private Integer userOnlineStatus;


//    /**
//     * 用户在线状态枚举类
//     * 该类定义了用户在线和离线两种状态，并为每种状态关联了一个描述性的数字
//     */
//    // 用户在线状态
//    private enum userOnlineStatus {
//        // 在线状态，用数字1表示
//        ONLINE(1),
//        // 离线状态，用数字0表示
//        OFFLINE(0);
//
//        // 状态的描述性数字
//        private final int description;
//
//        /**
//         * 构造函数，初始化用户在线状态及其描述性数字
//         *
//         * @param description 状态的描述性数字
//         */
//        userOnlineStatus(int description) {
//            this.description = description;
//        }
//
//        /**
//         * 获取状态的描述性数字
//         *
//         * @return 描述性数字
//         */
//        public int getDescription() {
//            return description;
//        }
//    }
//    /**
//     * 用户性别的枚举类
//     * 提供了用户性别的标准化表示，包括男性和女性
//     */
//    private enum UserSex {
//        // 定义男性用户性别，其描述为"男"
//        MAN("男"),
//        // 定义女性用户性别，其描述为"女"
//        GIRL("女");
//
//        // 性别描述的私有变量，用于存储性别的文本表示
//        private final String description;
//
//        /**
//         * 构造函数，用于创建UserSex枚举实例
//         *
//         * @param description 性别的文本描述，例如"男"或"女"
//         */
//        UserSex(String description) {
//            this.description = description;
//        }
//
//        /**
//         * 获取性别的文本描述
//         *
//         * @return 性别的文本描述，例如"男"或"女"
//         */
//        public String getDescription() {
//            return description;
//        }
//    }

}
